/*****************************************************************************
* File Name: Application.h
*
* Version: 1.0
*
* Description:
* This module handles state machine for HID Host operation.
*
* Note:
*
*
* Owner: SIRK
*
* Related Document:
* HOGP Spec V1.0
* BLE Component datasheet
*
* Hardware Dependency:
* CY5670 CySmart USB Dongle
*
* Code Tested With:
* 1. PSoC Creator 3.1 
* 2. ARM GCC 4.8.4
******************************************************************************
* Copyright (2015), Cypress Semiconductor Corporation.
******************************************************************************
* This software is owned by Cypress Semiconductor Corporation (Cypress) and is
* protected by and subject to worldwide patent protection (United States and
* foreign), United States copyright laws and international treaty provisions.
* Cypress hereby grants to licensee a personal, non-exclusive, non-transferable
* license to copy, use, modify, create derivative works of, and compile the
* Cypress Source Code and derivative works for the sole purpose of creating
* custom software in support of licensee product to be used only in conjunction
* with a Cypress integrated circuit as specified in the applicable agreement.
* Any reproduction, modification, translation, compilation, or representation of
* this software except as specified above is prohibited without the express
* written permission of Cypress.
*
* Disclaimer: CYPRESS MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH
* REGARD TO THIS MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 
* Cypress reserves the right to make changes without further notice to the
* materials described herein. Cypress does not assume any liability arising out
* of the application or use of any product or circuit described herein. Cypress
* does not authorize its products for use as critical components in life-support
* systems where a malfunction or failure may reasonably be expected to result in
* significant injury to the user. The inclusion of Cypress' product in a life-
* support systems application implies that the manufacturer assumes all risk of
* such use and in doing so indemnifies Cypress against all charges. Use may be
* limited by and subject to the applicable Cypress software license agreement.
*****************************************************************************/

#ifndef _APPLICATION_H_
#define _APPLICATION_H_
#include "main.h"

/*****************************************************************************
* MACRO Definition
*****************************************************************************/    

/*****************************************************************************
* Data Type Definition
*****************************************************************************/


/*****************************************************************************
* Enumerated Data Definition
*****************************************************************************/


/*****************************************************************************
* Data Struct Definition
*****************************************************************************/


/*****************************************************************************
* Global Variable Declaration
*****************************************************************************/


/*****************************************************************************
* External Function Prototypes
*****************************************************************************/

/*******************************************************************************
* Function Name: BLE_Init
********************************************************************************
*
* Summary:
*  Initialize BLE component for HID Host mode
*
* Parameters:
* None
*
* Return:
* None
*
* Theory:
* None
*
* Side Effects:
* None
*
*******************************************************************************/
extern void BLE_Init(void);

/*******************************************************************************
* Function Name: BLE_DeInit
********************************************************************************
*
* Summary:
* De-Initialize BLE component from HID Host mode while entering other mode
*
* Parameters:
* None
*
* Return:
* None
*
* Theory:
* None
*
* Side Effects:
* None
*
*******************************************************************************/
extern void BLE_DeInit(void);

/*******************************************************************************
* Function Name: Dongle_Ble_State_Handler
********************************************************************************
*
* Summary:
* Handles state machine for BLE HID Host mode
* The states include scanning, connection, GATT Discovery, Pairing and Profile level configuration etc.
*
* Parameters:
* None
*
* Return:
* None
*
* Theory:
* None
*
* Side Effects:
* None
*
*******************************************************************************/
extern void Dongle_Ble_State_Handler(void);

/*****************************************************************************
* Function Name: Process_Suspend_Command()
******************************************************************************
* Summary:
* This function puts system into low power mode, on suspend command.
*
* Parameters:
* None
*
* Return:
* None
*
* Theory:
* None
*
* Side Effects:
* None
* 
*****************************************************************************/
extern void Process_Suspend_Command(void);

/*******************************************************************************
* Function Name: Button_ISR
********************************************************************************
*
* Summary:
* ISR Callback function for user button pin, on interrupt this ISR will set button triggered flag
*
* Parameters:
* None
*
* Return:
* None
*
* Theory:
* None
*
* Side Effects:
*  Modifies isButtonTriggered flag
*
*******************************************************************************/
CY_ISR_PROTO(Button_ISR);

#define CHANGE_VOLUME_KEY
#define SUPPORT_GAMEPAD_KEY

#endif /*_APPLICATION_H_*/
/* [] END OF FILE */
